import request from '@/utils/request'

/**
 * 获取广交会参展商数据
 * @param {Object} params - 查询参数
 * @returns {Promise} 返回Promise对象
 */
export function getCantonFairExhibitors(params = {}) {
  return request({
    url: '/exhibitors/canton-fair/search',
    method: 'get',
    params: {
      keyword: params.keyword || '',
      product: params.product || '',
      page: params.page || 1,
      size: params.size || 10,
      sessionInfo: params.sessionInfo || '',
      companyType: params.companyType || '',
      companyScale: params.companyScale || '',
      hasContact: params.hasContact || '',
    },
    timeout: 60000,  // 增加超时时间到60秒
    headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/json'
    }
  }).then(response => {
    // 调试输出原始响应
    // 检查响应类型
    if (response === undefined || response === null) {
      return {
        code: 500,
        msg: '服务器返回了空响应',
        data: [],
        total: 0
      };
    }
    
    // 不做任何转换，直接返回原始响应
    // 在组件中处理各种可能的数据结构
    return response;
  }).catch(error => {
    throw error; // 重新抛出异常，让调用方处理
  });
}

/**
 * 获取符合条件的参展商数量
 * @param {Object} params 查询参数
 * @returns {Promise} 返回Promise对象
 */
export function getCantonFairExhibitorsCount(params) {
  return request({
    url: '/exhibitors/canton-fair/count',
    method: 'post',
    data: params,
    headers: {
      'Content-Type': 'application/json'
    }
  })
}

/**
 * 获取用户余额信息
 * @returns {Promise} 返回Promise对象
 */
export function getUserBalanceInfo() {
  return request({
    url: '/api/balance/info',
    method: 'get'
  })
}

/**
 * 搜索广交会参展商
 * @param {Object} params 搜索参数
 * @returns {Promise} 搜索结果
 */
export function searchCantonFairExhibitors(params) {
  return request({
    url: '/exhibitors/canton-fair/search',
    method: 'post',
    data: params,
    timeout: 30000  // 增加超时时间
  });
}

/**
 * 导出广交会参展商数据
 * @param {Object} params 查询参数
 * @returns {Promise} 导出结果
 */
export function exportCantonFairExhibitors(params) {
  // 分离参数，exportCount、selectedFields和language作为URL参数，其他参数放在请求体
  const exportCount = params.exportCount;
  const selectedFields = params.selectedFields;
  const language = params.language;
  const { exportCount: _, selectedFields: __, language: ___, ...bodyParams } = params;

  // 构建URL参数
  let url = `/exhibitors/canton-fair/export?exportCount=${exportCount}`;
  if (selectedFields && selectedFields.trim() !== '') {
    url += `&selectedFields=${encodeURIComponent(selectedFields)}`;
  }
  if (language && language.trim() !== '') {
    url += `&language=${encodeURIComponent(language)}`;
  }

  return request({
    url: url,
    method: 'post',
    data: bodyParams,
    responseType: 'blob',
    headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/json',
      'Connection': 'keep-alive'
    },
    timeout: 600000, // 增加超时时间到10分钟
    retry: 3,       // 增加重试次数
    retryDelay: 3000, // 重试延迟3秒
    meta: {
      isExport: true,
      skipErrorMessage: true // 跳过默认错误消息，让导出组件自己处理
    }
  })
}

/**
 * 获取参展商完整联系信息
 * @param {string|number} exhibitorId 参展商ID
 * @param {string|number} sessionNumber 广交会届数
 * @param {string} fieldName 需要获取的字段名称
 * @returns {Promise} 返回Promise对象
 */
export function getExhibitorFullContactInfo(exhibitorId, sessionNumber, fieldName) {
  return request({
    url: '/exhibitors/canton-fair/contact',
    method: 'get',
    params: {
      exhibitorId: exhibitorId,
      sessionNumber: sessionNumber,
      fieldName: fieldName
    },
    headers: {
      'Content-Type': 'application/json'
    }
  })
} 